﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Cephei
{
    namespace Generic
    {
        public interface ICell<T> : ICell
        {
            /// <summary>
            /// Latest Value held within the Cell
            /// </summary>
            T Value { get; set; }
            /// <summary>
            /// Historical value for the trade at the transaction time
            /// </summary>
            /// <param name="epoch">the timepoint for the transaction</param>
            /// <returns>the value</returns>
            T ValueAt (DateTime epoch);
            /// <summary>
            /// get the historical value from the cell <b>and</b> remove the history
            /// </summary>
            /// <param name="epoch">the timepoint for the transaction</param>
            /// <returns>the value</returns>
            T TakeAt (DateTime epoch);
            IFormula<T> Formula { get; set; }
        }
    }
}
